package com.draw;

import javax.swing.*;
import java.awt.*;

/**
 * @author LingLed
 * @version 1.0
 */
public class MyPanelMethod extends JPanel {
    //JPanel画板类,可以直接调用画板类的方法进行绘制图形
    //Graphics是抽象类,提供了绘图方法
    //被窗口使用时自动调用paint方法绘制
    //窗口大小,最小化最大化,调用repaint()都会触发重新绘制
    @Override
    public void paint(Graphics g) {
        //paint方法只是被程序自动调用,真正绘图的是Graphics的绘图方法
        //在其他方法中使用Graphics的绘图方法并调用该方法同样可以绘图
        super.paint(g);
        //保留,完成初始化
        System.out.println("paint被调用");
        //绘制线段
        //drawLine(x1,y1,x2,y2)
        g.drawLine(10,10,100,100);

        //绘制圆形
        //drawOval(x,y,width,height)
        g.drawOval(10,10,100,100);

        //设置画笔颜色
        g.setColor(Color.RED);

        //绘制矩形边框
        //drawRect(x,y,width,height)
        g.drawRect(100,100,100,100);
        //draw3DRect(x,y,width,height,bo) bo为boolean 表示需要凸的还是凹的
        g.draw3DRect(200,100,100,100,true);

        //填充矩形
        //fillRect(x,y,width,height)
        g.fillRect(100,100,100,100);
        //fill3DRect(x,y,width,height,bo)
        g.fill3DRect(200,100,100,100,false);
        //填充椭圆
        //fillOval(x,y,width,height)

        //画图片
        //drawImage(img, x, y, [w, h,] ImageObserver)
        Image image = Toolkit.getDefaultToolkit().getImage("src/com/draw/1.jpg");
        g.drawImage(image,100,100,image.getWidth(this)/2,
                image.getHeight(this)/2,this);

        //设置画笔的字体
        //setFont(font)
        //BOLD粗体
        g.setFont(new Font("宋体",Font.BOLD,20));
        //画字符串
        //drawString(str, x, y)
        g.drawString("Hello World", 100, 200);
    }
}

class MyWindows extends JFrame{
    //JFrame窗口类
    public static void main(String[] args) {
        new MyWindows();
    }
    public MyWindows() {
        //初始化窗口
        //设置窗口的位置和大小
//        setSize(500,500);
        setBounds(100, 100, 500, 500);
        //设置窗口是否可以被用户调整大小
        setResizable(false);
        //设置窗口可见状态
        setVisible(true);
        //设置窗口关闭操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //创建面板
        MyPanelMethod mp = new MyPanelMethod();
        //将面板放入窗口
        this.add(mp);
    }
}
